var Config = require("../config/config");
/**
 * 全局请求 obj
 * api:接口名称
 * params:请求参数
 * render:模板对象
 * renderBox:数据装载器 #box
 * success:成功回调
 * fail:失败回调
 * division:分割数组
 * successMsg:成功提示文字,默认成功不提示文字，传入此项提示
 * noFailMsg:失败默认提示的是接口返回的数据
 **/
var HRequest = {
	getBaseUrl: function(apiName) {
		return Config.Host + "/api/" + apiName;
	},
	get: function(obj) {
		if(!obj) {
			return false;
		}
		obj.method = 'GET';
		this.request(obj);
	},
	post: function(obj) {
		if(!obj) {
			return false;
		}
		obj.method = 'POST';
		this.request(obj);
	},
	request: function(obj) {
		
		if(!obj || typeof(obj) != 'object') {
			return false;
		};
		if(!obj.params) {
			obj.params = {};
		}
		// console.log(JSON.stringify(obj) );
		api.ajax({
		    url: this.getBaseUrl(obj.api),
		    headers: this.getHeader(),
		    method: obj.method,
			// returnAll: true,
		    data: {
		        values: obj.params,
		        // files: {
		        //     file: 'fs://a.gif'
		        // }
		    }
		}, function(res, err) {
			// console.log(JSON.stringify(err));
		    if (res) {
		        // console.log("API:"+obj.api+" 返回数据");
          //   	console.log(JSON.stringify(res) );
          //   	console.log('obj:'+JSON.stringify(obj) );
            	// api.alert({ msg: JSON.stringify(ret) });
            	if(res.code == 1) {
					// 分割数组
					if(obj.division) {
						for (var i = 0; i < res.data.length; i++) {
							var result = [];
							for(var j=0;j < res.data[i].song.length;j+=obj.division){
							    result.push(res.data[i].song.slice(j,j+obj.division));
							}
							res.data[i].song = result;
						}
					}
					// console.log('resres:'+JSON.stringify(res));
		        	if(obj.render) {
		        		if(!obj.renderBox) {
		        			obj.renderBox = '#content-box';
		        		}
		        		//var html = template(obj.render+"-template", res);
		        		$(obj.renderBox).html(obj.render(res));
		        	}
		        	if(obj.successMsg) {
						API.successToast(obj.successMsg);
		        	} 
		        	if(obj.success) {
		        		$.isFunction(obj.success) && obj.success(res);
		        	}
		        }
		        else if(res.code == 101) {
		        	API.errorToast('登录失效，请重新登录', function() {
		        		//api方式打开登录界面
						Config.w.openWin('public_login');
		        	})
		        }
		        else {
		        	if(obj.fail) {
		        		$.isFunction(obj.fail) && obj.fail(res);
		        	}
		        	if(!obj.noFailMsg) {
						try{
							API.errorToast(res.msg);
						}catch(e){
							//TODO handle the exception
						}
		        	}
		        }
		    } else {
		        // api.alert({ msg: JSON.stringify(err) });
		        if(obj.fail) {
	        		$.isFunction(obj.fail) && obj.fail(res);
	        	}
				
	        	if(!obj.noFailMsg) {
	        		try{
	        			API.errorToast(res.msg);
	        		}catch(e){
	        			//TODO handle the exception
	        		}
	        	}
		    }
		});
	},
	getHeader: function() {
		// var login_info = API.getStorage(Config.Key.user_token);
		var login_info = api.getPrefs({
						   sync: true,
						   key: Config.Key.user_token
						});
		// console.log(login_info)
		var _token = login_info ? login_info : '';
		let lang = api.getGlobalData({key: 'lang'}) == 'en' ? 'en' : 'zh-cn'; //en 语言包
		var header = {
			'token': _token,
			lang: lang,
		};
		console.log('header',JSON.stringify(header))
		return header;
	}
}
module.exports = HRequest;